const url = require("url");

// 扩展res  封装 res.send()
function changeRes(res){
    res.send=(data)=>{
        res.writeHead(200, {'Content-Type':'text/html;charset="utf-8'})
        res.end(data)
    }
}

let server = () => {
    let G ={
        _get:{},
        _post:{},
        staticPath:'static'
    } 
    let app= function(req, res){
        // 扩展res的方法
        changeRes(res)

        let pathname = url.parse(req.url).pathname; 
        // 获取请求类型 转为小写
        let method = req.method.toLowerCase();
        if(G['_'+method][pathname]){
            if(method == "get"){
                // get请求
                G._get[pathname](req, res)   //执行方法
            }else{
                // post请求  获取post的数据，把它绑定到 req.body
                let postData = '';
                req.on('data',(chunk)=>{
                    postData+=chunk;
                })
                req.on('end',()=>{
                    // console.log(postData);
                    req.body = postData
                    G._post[pathname](req, res)   //执行方法
                })   
            }
        }else{
            res.writeHead(404,{'Content-Type':'text/html;charset="utf-8'});
            res.end('页面不存在')
        } 
    }
    //相当于定义函数
    app.get=(str,cb)=>{
        //注册方法
        G._get[str]=cb   // 相当于在全局 G 里面注册了一个方法
    }
    app.post=(str,cb)=>{
        //注册方法
        G._post[str]=cb   // 相当于在全局 G 里面注册了一个方法
    }

    //配置静态web服务目录
    app.static=function(staticPath){
        G.staticPath=staticPath;
    }

    return app
}
module.exports = server()
